const sequelize = require('../config/database')
const { Product } = require('../models')

async function syncProductsTable() {
  try {
    console.log('开始同步products表结构...')
    
    // 测试数据库连接
    await sequelize.authenticate()
    console.log('数据库连接成功')
    
    // 同步Product模型（不删除现有数据）
    await Product.sync({ alter: true })
    console.log('products表结构同步完成')
    
    // 显示表结构
    const [columns] = await sequelize.query("DESCRIBE products")
    console.log('\n当前表结构:')
    columns.forEach(col => {
      console.log(`- ${col.Field}: ${col.Type} ${col.Null === 'YES' ? 'NULL' : 'NOT NULL'} ${col.Default ? `DEFAULT ${col.Default}` : ''}`)
    })
    
    return true
    
  } catch (error) {
    console.error('同步products表失败:', error.message)
    
    // 如果表不存在，创建新表
    if (error.message.includes("doesn't exist")) {
      console.log('表不存在，创建新表...')
      await Product.sync({ force: false })
      console.log('products表创建完成')
      return true
    }
    
    throw error
  }
}

// 如果直接运行此脚本
if (require.main === module) {
  syncProductsTable()
    .then(() => {
      console.log('操作完成')
      process.exit(0)
    })
    .catch(error => {
      console.error('操作失败:', error)
      process.exit(1)
    })
    .finally(() => {
      sequelize.close()
    })
}

module.exports = { syncProductsTable }